public class FinalDetail {
    public static void main(String[] args) {
        System.out.println(CC.n1);
    }
}

class AA{
    //final属性在定义时，必须赋初值(1.直接定义 2.在构造器中 3.在代码块中)
    //1.
    final int n1 = 100;
    final int n2;
    final int n3;

    public AA() {
        //2.在构造器中
        n2 = 200;
    }

    {
        //3.在代码块中
        n3 = 300;
    }
}

class BB{
    //如果final修饰的属性是静态的，则初始化的位置只能是
    // (1.直接赋值 2.在静态代码块中  不能在构造器中赋值)
    public static final int n1 = 100;//1.直接赋值
    public static final int n2;

    static {
    n2 = 200;//2.在静态代码块中
    }

}

class CC{
    //final和static搭配使用，不会导致类加载
    public final static int n1 = 100;

    static {
        System.out.println("静态代码块被执行..");
    }
}